Serial communication links have become indispensable in data transfer, primarily in chip-to-chip communications over printed circuit boards and backplanes. Data rates of 10 Gbps may be common and rates as high as 30 Gbps may be feasible. Multi-Gigabit SerDes transceiver devices may be utilized in many backplane environments such as optical switching and chip-to-chip communications.
A Serializer/Deserializer (SerDes) is a pair of transmitting and receiving functional blocks commonly used in high-speed data communication. SerDes may run over long distances, use few wires, and thus may have lower costs than parallel interfaces with equivalent data throughput.
In a typical communication system, integrated circuits (ICs) may be chosen to support the system cost and performance targets. In the case of application-specific integrated circuits (ASICs), the semiconductor vendor and SerDes macro designs may be chosen. These communication systems may contain multi-vendor chips interconnected through electrical links. Each SerDes link may be individually calibrated or tuned by providing values for calibration parameters specific to type of transmitter and receiver SerDes channels of a link.
A typical hardware device may have a plurality of SerDes transceivers. The individual transmitter and receiver SerDes channels contained in a device may be accessed through an application programming interface. The software interface may consist of a set of operations that can be performed on individual SerDes channels contained in a device. SerDes interface functions take a channel number to identify a particular channel.
SerDes hardware designs may use several equalization techniques in various combinations in order to provide channel equalization for multi-gigabit SerDes links. Each SerDes design uses its own hardware specific parameters for calibrating its transmitter or receiver blocks. The calibration parameters values are determined based on link loss measured at a particular rate for each individual link. A calibration or tuning procedure includes configuring appropriate parameter values into transmitter and receiver blocks of a SerDes link.
In order to calibrate a SerDes link, a series of operations needs to be performed on transmitter and receiver channels of the link. The sequence of operations, which may include configuring specific calibration values into the link's transmitter and receiver SerDes channels, is performed to bring up a link for error free data communication and is called a tuning algorithm.
Currently within the art, SerDes tuning is typically implemented using custom product dependent application code. Product specific code contains data such as number of SerDes links, types of transmitter and receiver SerDes channels for each link, an interconnect map of links between devices containing those SerDes channels, and calibration parameters values for each individual link. The tuning algorithm for calibrating a SerDes link may depend on the type of SerDes transmitter and receiver blocks. Custom tuning code is tied to a particular product and is generally not reusable in other products. When a product has multi-vendor SerDes macros, common operations on SerDes links with different endpoint types are duplicated and code is not shared. Also, the algorithm used for tuning a set of links is hard-coded in the application and cannot be replaced or re-used. Testing and debugging link issues is laborious and repetitive and costs hours of engineering time. Diagnostics tools and application software used to bring up the links cannot share code resulting in longer development cycles.